package unq.o3.tp0

class Robot(TACTICA : Tactica, ENERGIA_TOTAL : Int) {
	var energia = ENERGIA_TOTAL
	var accion : {def realizarAccion(robot : Robot, robotOponente : Robot); 
		def restarEnergia(robot : Robot, robotOponente : Robot)} = Escudo
	
	def getEnergia() : Int = this.energia
	
	def setEnergia(energia : Int) = {
		this.energia = energia
	}
	
	def getAccion() : {def realizarAccion(robot : Robot, robotOponente : Robot); 
		def restarEnergia(robot : Robot, robotOponente : Robot)} = this.accion
	
	def setAccion(accion : 
	  {def realizarAccion(robot : Robot, robotOponente : Robot); 
	  def restarEnergia(robot : Robot, robotOponente : Robot)}) = {
		this.accion = accion
	}
	
	def porcentajeEnergia() : Float = this.getEnergia()*100/this.ENERGIA_TOTAL
	
	def realizarAccion(numeroTurno : Int) : 
		{def realizarAccion(robot : Robot, robotOponente : Robot); 
		def restarEnergia(robot : Robot, robotOponente : Robot)} = this.TACTICA.darGolpe(numeroTurno)
	
	def ejecutarTurno(numeroTurno : Int, robotOponente : Robot) = {
		this.setAccion(this.realizarAccion(numeroTurno))
		
		if(this.porcentajeEnergia() > 0) {
			this.getAccion().realizarAccion(this, robotOponente)
		}
		println();
	}

}